---
tags:
- software
- engineering
- architecture
created: 2024-02-03
---
# Software Architecture
Software architecture is the high-level structure of a software system and the discipline of creating such structures.
## Design Principles
- **Separation of Concerns** - Like the [[Zettelkasten Method]] for code
- **Modularity** - Independent, reusable components
- **SOLID Principles** - Foundation of good OOP design
- **DRY** - Don't Repeat Yourself
## Architectural Patterns
- Microservices
- Event-driven architecture
- Layered architecture
- Hexagonal architecture (Ports & Adapters)
## Connection to Learning
Understanding architecture requires [[Deep Work]] and systematic [[Learning Strategies]]. It's not something you can learn superficially.
## Current Projects
Applying these principles in [[Projects]]:
- Building a CLI tool (this vault indexer!)
- Microservices migration
- API design
## Resources
See [[Book Notes]] for:
- Clean Architecture by Robert Martin
- Domain-Driven Design by Eric Evans
- Building Microservices by Sam Newman
Track progress in [[Daily Notes]].
Related: [[Pomodoro Technique]] for focused coding sessions.
#engineering #software